// 项目中使用的格式化函数
/**
 * 通用的布尔值格式化
 * @param {*} value 
 * @returns {string} '是' | '否' | 原值
 */
export const formatBoolean = (value) => {
  const strValue = String(value).toLowerCase();
  if (strValue === 'true' || strValue === '1') return '是';
  if (strValue === 'false' || strValue === '0') return '否';
  return value;
};

/**
 * 客户重要性等级格式化
 * @param {number} value 
 * @returns {string} '低' | '中' | '高' | ''
 */
export const formatImportance = (value) => {
  
  // 如果是字符串且已经是 '低' | '中' | '高'，直接返回
  if (typeof value === 'string' && ['低', '中', '高'].includes(value)) {
    return value;
  }

  // 处理数字类型的值（包括字符串形式的数字）
  let numValue;
  
  if (typeof value === 'number') {
    numValue = value;
  } else if (typeof value === 'string') {
    // 尝试将字符串转换为数字
    const parsedValue = parseFloat(value);
    // 检查是否为有效数字且不是 NaN
    if (!isNaN(parsedValue) && isFinite(parsedValue)) {
      numValue = parsedValue;
    }
  }
  
  // 如果成功获得数字值，进行范围判断和转换
  if (numValue !== undefined && numValue >= 1 && numValue <= 3) {
    const intValue = Math.floor(numValue);
    return ['', '低', '中', '高'][intValue] || '';
  }
  
  // 其他情况返回空字符串
  return '';
};

/**
 * 字段格式化配置表
 * key: 字段名 (row.field_name)
 * value: 对应的格式化函数
 */
export const fieldFormatConfig = {
  purchase_and_sale: formatBoolean,
  customer_importance: formatImportance,
  pre_customer_importance: formatImportance,
  // 可以继续扩展...
};

/**
 * 根据字段名自动选择格式化方法
 * @param {string} fieldName - 字段名 (row.field_name)
 * @param {*} cellValue - 待格式化的值
 * @returns {*} 格式化后的值
 */
export const formatFieldValue = (fieldName, cellValue) => {
  const formatter = fieldFormatConfig[fieldName];
  return formatter ? formatter(cellValue) : cellValue;
  
};

/**
 * 适用于 el-table 的 formatter 函数
 * @param {object} row - 表格行数据
 * @param {object} column - 列信息（未使用）
 * @param {*} cellValue - 当前单元格的值
 * @returns {*} 格式化后的值
 */
export const tableCellFormatter = (field, cellValue) => {
  return formatFieldValue(field, cellValue);
};